<?php
/**
 * spICase
 * 用于SpeedPHP的用户权限管理程序；
 * 该程序思维源于spAcl，并进行了为数不少的改进；
 * 基础版本支持组管理、用户注册、用户登录、基于控制器、页面、权限代码级别的权限控制；
 * 增强版本支持与UCENTER、微博、淘宝等平台联接帐户。
 * @version 基础版本
 * @author cuis@vip.qq.com
 * #本程序遵从GPL协议，你可免费使用，如需技术支持，则可能为有偿服务，详细请联系作者
 *
 */
class spICase {
	
	public $checker;
	
	/**
	 * 构造函数，设置权限检查程序与提示程序，并于页面打开时，即时检测权限
	 */
	public function __construct()
	{
		$this -> checker = spClass('libICase');
	}

	/**
	 * 获取当前会话的用户标识
	 */
	public function get()
	{
		if(empty($_SESSION[$GLOBALS['G_SP']['sp_app_id']."_SpAclSession"])) return '-1';//-1是游客的组ID
		return $_SESSION[$GLOBALS['G_SP']['sp_app_id']."_SpAclSession"];
	}

	/**
	 * 使用程序调度器进行检查等处理
	 */
	public function check($AclCode = NULL)
	{
		GLOBAL $__controller, $__action;
		$checker = $this->checker; $users_id = $this->get();
		$result = $checker -> acl_rule_verify($users_id,$__controller,$__action,$AclCode);
		if(!$result || $result <=0){
			$this -> prompt();
		}
	}
	/**
	 * 无权限提示跳转，请自行设定任何PHP代码!
	 */
	public function prompt()
	{
		$url = spUrl(); // 跳转到首页，请将该页面设置成游客可以进入。
		echo "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><script>function sptips(){alert(\"Access Failed!\");location.href=\"{$url}\";}</script></head><body onload=\"sptips()\"></body></html>";
		exit;
	}

	/**
	 * 设置当前用户，内部使用SESSION记录
	 * 
	 * @param users_id    用户标识：只能是用户ID
	 */
	public function set($users_id)
	{
		$_SESSION[$GLOBALS['G_SP']['sp_app_id']."_SpAclSession"] = $users_id;
	}
}